/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.javscaz.javscaztools.cadenas;

import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.javscaz.javscaztools.mensajeria.Msg;

/**
 *
 * @author avbravo
 */
public class ManejoCadenas {
  public static String ConvertirLetraMayuscula(String texto) {

        try {

            texto = texto.trim();
            int largo = texto.length();
            if (largo <= 0) {
                return texto;
            }
            String letra = texto.substring(0, 1);

            texto = letra.toUpperCase() + texto.substring(1);
        } catch (Exception ex) {
            Msg.error(ex, "javscazUtilidades.ConvertirLetraMayuscula()");
        }
        return texto;
    }
/**
     * ConvertirLetraMinuscula
     * @param s_cadena
     * @param caracter
     * @return 
     */
    public static String ConvertirLetraMinuscula(String texto) {

        try {

            texto = texto.trim();
            int largo = texto.length();
            if (largo <= 0) {
                return texto;
            }
            String letra = texto.substring(0, 1);

            texto = letra.toLowerCase() + texto.substring(1);
        } catch (Exception ex) {
            Msg.error(ex, "javscazUtilidades.ConvertirLetraMinuscula()");
        }
        return texto;
    }
    
    /*
     * Elimina caracteres de una cadena
     * 
     */
    public static String EliminaCaracteres(String s_cadena, char caracter) {
        String nueva_cadena = "";
        try {

            // Character caracter = null;

            /* Va recorriendo la cadena s_cadena y copia a la cadena que va a regresar,
            sólo los caracteres que no estén en la cadena s_caracteres */
            for (int i = 0; i
                    < s_cadena.length(); i++) {


                if (s_cadena.charAt(i) == caracter) {

                    nueva_cadena += "'";


                } else {
                    nueva_cadena += s_cadena.charAt(i);


                }
            }

            return nueva_cadena;


        } catch (Exception ex) {
            Msg.error(ex, "EliminaCaracteres()");
            return s_cadena;

        }
    }

    /*
     * recibe una cadena generalmente la ruta 
     * "org.avbravo.aplicacion.java"
     * y la convierte a ruta del sistema operativo
     * "org/avbravo/aplicacion.java
     * 
     */
    public static String ConvertiraRutaSistema(String texto, String file_separador) {
        try {
            ArrayList<String> lista = DescomponerCadena(texto, ".");
            StringBuilder r = new StringBuilder("");
            int n = 1;

            for (String l : lista) {

                if (n == lista.size()) {

                    r.append(l);
                } else {
                    r.append(l + file_separador);

                }

                n++;
            }
            return r.toString();
        } catch (Exception ex) {
            Msg.error(ex, "EliminaCaracteres()");


        }
        return "";
    }
    /*
     * Descompone una cadena indicandole un separador
     * por ejemplo: separador="."
     * texto="org.avbravo.miaplicacion.archivo.java"
     * devolvera
     * org
     * avbravo
     * miaplicacion
     * archivo.java
     * 
     * 
     */

    public static ArrayList<String> DescomponerCadena(String texto, String separador) {
        ArrayList<String> lista = new ArrayList<String>();

        try {
            lista.removeAll(lista);


            StringTokenizer tk = new StringTokenizer(texto, separador); // Cambia aquí el separador
            while (tk.hasMoreTokens()) {

                lista.add(tk.nextToken());
            }
        } catch (Exception ex) {
            Msg.error(ex, "DescomponerCadena()");

        }
        return lista;
    }

    /*
     * valida la direccion de correo electronico
     * utilizando expresiones regulares
     * 
     */
    public static boolean ValidarEmail(String email) {
        try {
            Pattern pat = Pattern.compile("^[a-zA-Z0-9_-]{2,}@[a-zA-Z0-9_-]{2,}\\.[a-zA-Z]{2,4}(\\.[a-zA-Z]{2,4})?$");
            Matcher mat = pat.matcher(email);
            if (mat.find()) {
                return true;
            } else {
                return false;
            }



        } catch (Exception ex) {
            Msg.error(ex, "ValidarEmail()");
        }
        return false;
    }   
}
